Add some more a11y tests
authorMatthias Clasen <mclasen@redhat.com>
Mon, 27 Jul 2020 04:22:15 +0000 (00:22 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Mon, 27 Jul 2020 05:13:16 +0000 (01:13 -0400)
Add some tests that exercise the accessible machinery
without any connection to widgets.

testsuite/a11y/accessible.c [new file with mode: 0644]
testsuite/a11y/meson.build

diff --git a/testsuite/a11y/accessible.c b/testsuite/a11y/accessible.c
new file mode 100644 (file)
index 0000000..e43001f
--- /dev/null
@@ -0,0 +1,637 @@
+#include <gtk/gtk.h>
+#include "gtk/gtkaccessibleprivate.h"
+
+/* These tests verify that the GtkAccessible machinery works, independent
+ * of any concrete widget accessible implementations. Therefore, we use
+ * a dummy object that implements GtkAccessible
+ */
+typedef struct
+{
+  GObject parent_instance;
+
+  GtkAccessibleRole role;
+  GtkATContext *at_context;
+} TestObject;
+
+typedef struct
+{
+  GObjectClass parent_class;
+} TestObjectClass;
+
+enum {
+  PROP_ACCESSIBLE_ROLE = 1,
+  NUM_PROPERTIES
+};
+
+static GtkATContext *
+test_object_accessible_get_at_context (GtkAccessible *accessible)
+{
+  TestObject *self = (TestObject*)accessible;
+
+  if (self->at_context == NULL)
+    self->at_context = g_object_new (g_type_from_name ("GtkTestATContext"),
+                                     "accessible-role", self->role,
+                                     "accessible", accessible,
+                                     NULL);
+
+  return self->at_context;
+}
+
+static void
+test_object_accessible_init (GtkAccessibleInterface *iface)
+{
+  iface->get_at_context = test_object_accessible_get_at_context;
+}
+
+G_DEFINE_TYPE_WITH_CODE (TestObject, test_object, G_TYPE_OBJECT,
+                         G_IMPLEMENT_INTERFACE (GTK_TYPE_ACCESSIBLE,
+                                                test_object_accessible_init))
+
+static void
+test_object_init (TestObject *self)
+{
+  self->role = GTK_ACCESSIBLE_ROLE_WIDGET;
+}
+
+static void
+test_object_set_property (GObject      *object,
+                          guint         prop_id,
+                          const GValue *value,
+                          GParamSpec   *pspec)
+{
+  TestObject *self = (TestObject *)object;
+
+  switch (prop_id)
+    {
+    case PROP_ACCESSIBLE_ROLE:
+      self->role = g_value_get_enum (value);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+    }
+}
+
+static void
+test_object_get_property (GObject    *object,
+                          guint       prop_id,
+                          GValue     *value,
+                          GParamSpec *pspec)
+{
+  TestObject *self = (TestObject *)object;
+
+  switch (prop_id)
+    {
+    case PROP_ACCESSIBLE_ROLE:
+      g_value_set_enum (value, self->role);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+    }
+}
+
+static void
+test_object_class_init (TestObjectClass *class)
+{
+  GObjectClass *gobject_class = G_OBJECT_CLASS (class);
+
+  gobject_class->set_property = test_object_set_property;
+  gobject_class->get_property = test_object_get_property;
+
+  g_object_class_override_property (gobject_class, PROP_ACCESSIBLE_ROLE, "accessible-role");
+}
+
+static TestObject *
+test_object_new (GtkAccessibleRole role)
+{
+  return g_object_new (test_object_get_type (),
+                       "accessible-role", role,
+                       NULL);
+}
+
+/* Tests for states */
+
+static void
+test_boolean_state (gconstpointer data)
+{
+  GtkAccessibleState state = GPOINTER_TO_UINT (data);
+  TestObject *object;
+
+  object = test_object_new (GTK_ACCESSIBLE_ROLE_CHECKBOX);
+
+  gtk_test_accessible_assert_state (object, state, FALSE);
+
+  gtk_accessible_update_state (GTK_ACCESSIBLE (object),
+                               state, TRUE,
+                               -1);
+  gtk_test_accessible_assert_state (object, state, TRUE);
+
+  gtk_accessible_update_state (GTK_ACCESSIBLE (object),
+                               state, FALSE,
+                               -1);
+  gtk_test_accessible_assert_state (object, state, FALSE);
+
+  g_object_unref (object);
+}
+
+static void
+test_maybe_boolean_state (gconstpointer data)
+{
+  GtkAccessibleState state = GPOINTER_TO_UINT (data);
+  TestObject *object;
+
+  object = test_object_new (GTK_ACCESSIBLE_ROLE_CHECKBOX);
+
+  gtk_test_accessible_assert_state (object, state, GTK_ACCESSIBLE_VALUE_UNDEFINED);
+
+  gtk_accessible_update_state (GTK_ACCESSIBLE (object),
+                               state, TRUE,
+                               -1);
+  gtk_test_accessible_assert_state (object, state, TRUE);
+
+  gtk_accessible_update_state (GTK_ACCESSIBLE (object),
+                               state, FALSE,
+                               -1);
+  gtk_test_accessible_assert_state (object, state, FALSE);
+
+  gtk_accessible_update_state (GTK_ACCESSIBLE (object),
+                               state, GTK_ACCESSIBLE_VALUE_UNDEFINED,
+                               -1);
+  gtk_test_accessible_assert_state (object, state, GTK_ACCESSIBLE_VALUE_UNDEFINED);
+
+  g_object_unref (object);
+}
+
+static void
+test_tristate_state (gconstpointer data)
+{
+  GtkAccessibleState state = GPOINTER_TO_UINT (data);
+  TestObject *object;
+
+  object = test_object_new (GTK_ACCESSIBLE_ROLE_CHECKBOX);
+
+  gtk_test_accessible_assert_role (object, GTK_ACCESSIBLE_ROLE_CHECKBOX);
+
+  gtk_test_accessible_assert_state (object, state, GTK_ACCESSIBLE_VALUE_UNDEFINED);
+
+  gtk_accessible_update_state (GTK_ACCESSIBLE (object),
+                               state, GTK_ACCESSIBLE_TRISTATE_FALSE,
+                               -1);
+  gtk_test_accessible_assert_state (object, state, GTK_ACCESSIBLE_TRISTATE_FALSE);
+
+  gtk_accessible_update_state (GTK_ACCESSIBLE (object),
+                               state, GTK_ACCESSIBLE_TRISTATE_TRUE,
+                               -1);
+  gtk_test_accessible_assert_state (object, state, GTK_ACCESSIBLE_TRISTATE_TRUE);
+
+  gtk_accessible_update_state (GTK_ACCESSIBLE (object),
+                               state, GTK_ACCESSIBLE_TRISTATE_MIXED,
+                               -1);
+  gtk_test_accessible_assert_state (object, state, GTK_ACCESSIBLE_TRISTATE_MIXED);
+
+  gtk_accessible_update_state (GTK_ACCESSIBLE (object),
+                               state, GTK_ACCESSIBLE_VALUE_UNDEFINED,
+                               -1);
+  gtk_test_accessible_assert_state (object, state, GTK_ACCESSIBLE_VALUE_UNDEFINED);
+
+  g_object_unref (object);
+}
+
+static void
+test_invalid_state (gconstpointer data)
+{
+  GtkAccessibleState state = GPOINTER_TO_UINT (data);
+  TestObject *object;
+
+  object = test_object_new (GTK_ACCESSIBLE_ROLE_CHECKBOX);
+
+  gtk_test_accessible_assert_role (object, GTK_ACCESSIBLE_ROLE_CHECKBOX);
+
+  gtk_test_accessible_assert_state (object, state, GTK_ACCESSIBLE_INVALID_FALSE);
+
+  gtk_accessible_update_state (GTK_ACCESSIBLE (object),
+                               state, GTK_ACCESSIBLE_INVALID_TRUE,
+                               -1);
+  gtk_test_accessible_assert_state (object, state, GTK_ACCESSIBLE_INVALID_TRUE);
+
+  gtk_accessible_update_state (GTK_ACCESSIBLE (object),
+                               state, GTK_ACCESSIBLE_INVALID_GRAMMAR,
+                               -1);
+  gtk_test_accessible_assert_state (object, state, GTK_ACCESSIBLE_INVALID_GRAMMAR);
+
+  gtk_accessible_update_state (GTK_ACCESSIBLE (object),
+                               state, GTK_ACCESSIBLE_INVALID_SPELLING,
+                               -1);
+  gtk_test_accessible_assert_state (object, state, GTK_ACCESSIBLE_INVALID_SPELLING);
+
+  gtk_accessible_update_state (GTK_ACCESSIBLE (object),
+                               state, GTK_ACCESSIBLE_INVALID_FALSE,
+                               -1);
+  gtk_test_accessible_assert_state (object, state, GTK_ACCESSIBLE_INVALID_FALSE);
+
+  g_object_unref (object);
+}
+
+static void
+test_autocomplete_property (gconstpointer data)
+{
+  GtkAccessibleProperty property = GPOINTER_TO_UINT (data);
+  TestObject *object;
+
+  object = test_object_new (GTK_ACCESSIBLE_ROLE_CHECKBOX);
+
+  gtk_test_accessible_assert_role (object, GTK_ACCESSIBLE_ROLE_CHECKBOX);
+
+  gtk_test_accessible_assert_property (object, property, GTK_ACCESSIBLE_AUTOCOMPLETE_NONE);
+  gtk_accessible_update_property (GTK_ACCESSIBLE (object),
+                                  property, GTK_ACCESSIBLE_AUTOCOMPLETE_INLINE,
+                                  -1);
+  gtk_test_accessible_assert_property (object, property, GTK_ACCESSIBLE_AUTOCOMPLETE_INLINE);
+
+  gtk_accessible_update_property (GTK_ACCESSIBLE (object),
+                                  property, GTK_ACCESSIBLE_AUTOCOMPLETE_LIST,
+                                  -1);
+  gtk_test_accessible_assert_property (object, property, GTK_ACCESSIBLE_AUTOCOMPLETE_LIST);
+
+  gtk_accessible_update_property (GTK_ACCESSIBLE (object),
+                                  property, GTK_ACCESSIBLE_AUTOCOMPLETE_BOTH,
+                                  -1);
+  gtk_test_accessible_assert_property (object, property, GTK_ACCESSIBLE_AUTOCOMPLETE_BOTH);
+
+  gtk_accessible_update_property (GTK_ACCESSIBLE (object),
+                                  property, GTK_ACCESSIBLE_AUTOCOMPLETE_NONE,
+                                  -1);
+  gtk_test_accessible_assert_property (object, property, GTK_ACCESSIBLE_AUTOCOMPLETE_NONE);
+
+  g_object_unref (object);
+}
+
+static void
+test_string_property (gconstpointer data)
+{
+  GtkAccessibleProperty property = GPOINTER_TO_UINT (data);
+  TestObject *object;
+
+  object = test_object_new (GTK_ACCESSIBLE_ROLE_CHECKBOX);
+
+  gtk_test_accessible_assert_role (object, GTK_ACCESSIBLE_ROLE_CHECKBOX);
+
+  gtk_test_accessible_assert_property (object, property, "");
+
+  gtk_accessible_update_property (GTK_ACCESSIBLE (object),
+                                  property, "some string that holds no particular value",
+                                  -1);
+  gtk_test_accessible_assert_property (object, property, "some string that holds no particular value");
+
+  gtk_accessible_update_property (GTK_ACCESSIBLE (object),
+                                  property, "see\nif\nnewlines\nwork ?!",
+                                  -1);
+  gtk_test_accessible_assert_property (object, property, "see\nif\nnewlines\nwork ?!");
+
+  gtk_accessible_update_property (GTK_ACCESSIBLE (object),
+                                  property, "",
+                                  -1);
+  gtk_test_accessible_assert_property (object, property, "");
+
+  g_object_unref (object);
+}
+
+static void
+test_boolean_property (gconstpointer data)
+{
+  GtkAccessibleProperty property = GPOINTER_TO_UINT (data);
+  TestObject *object;
+
+  object = test_object_new (GTK_ACCESSIBLE_ROLE_CHECKBOX);
+
+  gtk_test_accessible_assert_role (object, GTK_ACCESSIBLE_ROLE_CHECKBOX);
+
+  gtk_test_accessible_assert_property (object, property, FALSE);
+
+  gtk_accessible_update_property (GTK_ACCESSIBLE (object),
+                                  property, TRUE,
+                                  -1);
+  gtk_test_accessible_assert_property (object, property, TRUE);
+
+  gtk_accessible_update_property (GTK_ACCESSIBLE (object),
+                                  property, FALSE,
+                                  -1);
+  gtk_test_accessible_assert_property (object, property, FALSE);
+
+  g_object_unref (object);
+}
+
+static void
+test_int_property (gconstpointer data)
+{
+  GtkAccessibleProperty property = GPOINTER_TO_UINT (data);
+  TestObject *object;
+
+  object = test_object_new (GTK_ACCESSIBLE_ROLE_CHECKBOX);
+
+  gtk_test_accessible_assert_role (object, GTK_ACCESSIBLE_ROLE_CHECKBOX);
+
+  gtk_test_accessible_assert_property (object, property, 0);
+
+  gtk_accessible_update_property (GTK_ACCESSIBLE (object),
+                                  property, 1,
+                                  -1);
+  gtk_test_accessible_assert_property (object, property, 1);
+
+  gtk_accessible_update_property (GTK_ACCESSIBLE (object),
+                                  property, -1,
+                                  -1);
+  gtk_test_accessible_assert_property (object, property, -1);
+
+  gtk_accessible_update_property (GTK_ACCESSIBLE (object),
+                                  property, 100,
+                                  -1);
+  gtk_test_accessible_assert_property (object, property, 100);
+
+  g_object_unref (object);
+}
+
+static void
+test_number_property (gconstpointer data)
+{
+  GtkAccessibleProperty property = GPOINTER_TO_UINT (data);
+  TestObject *object;
+
+  object = test_object_new (GTK_ACCESSIBLE_ROLE_CHECKBOX);
+
+  gtk_test_accessible_assert_role (object, GTK_ACCESSIBLE_ROLE_CHECKBOX);
+
+  gtk_test_accessible_assert_property (object, property, 0.);
+
+  gtk_accessible_update_property (GTK_ACCESSIBLE (object),
+                                  property, 1.5,
+                                  -1);
+  gtk_test_accessible_assert_property (object, property, 1.5);
+
+  gtk_accessible_update_property (GTK_ACCESSIBLE (object),
+                                  property, -1.,
+                                  -1);
+  gtk_test_accessible_assert_property (object, property, -1.);
+
+  gtk_accessible_update_property (GTK_ACCESSIBLE (object),
+                                  property, 1e6,
+                                  -1);
+  gtk_test_accessible_assert_property (object, property, 1e6);
+
+  g_object_unref (object);
+}
+
+static void
+test_orientation_property (gconstpointer data)
+{
+  GtkAccessibleProperty property = GPOINTER_TO_UINT (data);
+  TestObject *object;
+
+  object = test_object_new (GTK_ACCESSIBLE_ROLE_CHECKBOX);
+
+  gtk_test_accessible_assert_role (object, GTK_ACCESSIBLE_ROLE_CHECKBOX);
+
+  gtk_test_accessible_assert_property (object, property, GTK_ACCESSIBLE_VALUE_UNDEFINED);
+
+  gtk_accessible_update_property (GTK_ACCESSIBLE (object),
+                                  property, GTK_ORIENTATION_HORIZONTAL,
+                                  -1);
+  gtk_test_accessible_assert_property (object, property, GTK_ORIENTATION_HORIZONTAL);
+
+  gtk_accessible_update_property (GTK_ACCESSIBLE (object),
+                                  property, GTK_ORIENTATION_VERTICAL,
+                                  -1);
+  gtk_test_accessible_assert_property (object, property, GTK_ORIENTATION_VERTICAL);
+
+  gtk_accessible_update_property (GTK_ACCESSIBLE (object),
+                                  property, GTK_ACCESSIBLE_VALUE_UNDEFINED,
+                                  -1);
+  gtk_test_accessible_assert_property (object, property, GTK_ACCESSIBLE_VALUE_UNDEFINED);
+
+  g_object_unref (object);
+}
+
+static void
+test_sort_property (gconstpointer data)
+{
+  GtkAccessibleProperty property = GPOINTER_TO_UINT (data);
+  TestObject *object;
+
+  object = test_object_new (GTK_ACCESSIBLE_ROLE_CHECKBOX);
+
+  gtk_test_accessible_assert_role (object, GTK_ACCESSIBLE_ROLE_CHECKBOX);
+
+  gtk_test_accessible_assert_property (object, property, GTK_ACCESSIBLE_SORT_NONE);
+
+  gtk_accessible_update_property (GTK_ACCESSIBLE (object),
+                                  property, GTK_ACCESSIBLE_SORT_ASCENDING,
+                                  -1);
+  gtk_test_accessible_assert_property (object, property, GTK_ACCESSIBLE_SORT_ASCENDING);
+
+  gtk_accessible_update_property (GTK_ACCESSIBLE (object),
+                                  property, GTK_ACCESSIBLE_SORT_DESCENDING,
+                                  -1);
+  gtk_test_accessible_assert_property (object, property, GTK_ACCESSIBLE_SORT_DESCENDING);
+
+  gtk_accessible_update_property (GTK_ACCESSIBLE (object),
+                                  property, GTK_ACCESSIBLE_SORT_OTHER,
+                                  -1);
+  gtk_test_accessible_assert_property (object, property, GTK_ACCESSIBLE_SORT_OTHER);
+
+  gtk_accessible_update_property (GTK_ACCESSIBLE (object),
+                                  property, GTK_ACCESSIBLE_SORT_NONE,
+                                  -1);
+  gtk_test_accessible_assert_property (object, property, GTK_ACCESSIBLE_SORT_NONE);
+
+  g_object_unref (object);
+}
+
+static void
+test_int_relation (gconstpointer data)
+{
+  GtkAccessibleRelation relation = GPOINTER_TO_UINT (data);
+  TestObject *object;
+
+  object = test_object_new (GTK_ACCESSIBLE_ROLE_CHECKBOX);
+
+  gtk_test_accessible_assert_role (object, GTK_ACCESSIBLE_ROLE_CHECKBOX);
+
+  gtk_test_accessible_assert_relation (object, relation, 0);
+
+  gtk_accessible_update_relation (GTK_ACCESSIBLE (object),
+                                  relation, 1,
+                                  -1);
+  gtk_test_accessible_assert_relation (object, relation, 1);
+
+  gtk_accessible_update_relation (GTK_ACCESSIBLE (object),
+                                  relation, -1,
+                                  -1);
+  gtk_test_accessible_assert_relation (object, relation, -1);
+
+  gtk_accessible_update_relation (GTK_ACCESSIBLE (object),
+                                  relation, 100,
+                                  -1);
+  gtk_test_accessible_assert_relation (object, relation, 100);
+
+  g_object_unref (object);
+}
+
+static void
+test_string_relation (gconstpointer data)
+{
+  GtkAccessibleRelation relation = GPOINTER_TO_UINT (data);
+  TestObject *object;
+
+  object = test_object_new (GTK_ACCESSIBLE_ROLE_CHECKBOX);
+
+  gtk_test_accessible_assert_role (object, GTK_ACCESSIBLE_ROLE_CHECKBOX);
+
+  gtk_test_accessible_assert_relation (object, relation, "");
+
+  gtk_accessible_update_relation (GTK_ACCESSIBLE (object),
+                                  relation, "some string that holds no particular value",
+                                  -1);
+  gtk_test_accessible_assert_relation (object, relation, "some string that holds no particular value");
+
+  gtk_accessible_update_relation (GTK_ACCESSIBLE (object),
+                                  relation, "see\nif\nnewlines\nwork ?!",
+                                  -1);
+  gtk_test_accessible_assert_relation (object, relation, "see\nif\nnewlines\nwork ?!");
+
+  gtk_accessible_update_relation (GTK_ACCESSIBLE (object),
+                                  relation, "",
+                                  -1);
+  gtk_test_accessible_assert_relation (object, relation, "");
+
+  g_object_unref (object);
+}
+
+static void
+test_ref_relation (gconstpointer data)
+{
+  GtkAccessibleRelation relation = GPOINTER_TO_UINT (data);
+  TestObject *object;
+  TestObject *other;
+
+  object = test_object_new (GTK_ACCESSIBLE_ROLE_CHECKBOX);
+  other = test_object_new (GTK_ACCESSIBLE_ROLE_CHECKBOX);
+
+  gtk_test_accessible_assert_role (object, GTK_ACCESSIBLE_ROLE_CHECKBOX);
+
+  //gtk_test_accessible_assert_relation (object, relation, GTK_ACCESSIBLE_VALUE_UNDEFINED);
+
+  gtk_accessible_update_relation (GTK_ACCESSIBLE (object),
+                                  relation, other,
+                                  -1);
+  gtk_test_accessible_assert_relation (object, relation, other);
+
+  g_object_unref (object);
+  g_object_unref (other);
+}
+
+static void
+test_reflist_relation (gconstpointer data)
+{
+  GtkAccessibleRelation relation = GPOINTER_TO_UINT (data);
+  TestObject *object;
+  TestObject *other;
+  TestObject *third;
+  GList *refs;
+
+  object = test_object_new (GTK_ACCESSIBLE_ROLE_CHECKBOX);
+  other = test_object_new (GTK_ACCESSIBLE_ROLE_CHECKBOX);
+  third = test_object_new (GTK_ACCESSIBLE_ROLE_CHECKBOX);
+
+  gtk_test_accessible_assert_role (object, GTK_ACCESSIBLE_ROLE_CHECKBOX);
+
+  //gtk_test_accessible_assert_relation (object, relation, GTK_ACCESSIBLE_VALUE_UNDEFINED);
+
+  refs = g_list_append (NULL, other);
+
+  gtk_accessible_update_relation (GTK_ACCESSIBLE (object),
+                                  relation, refs,
+                                  -1);
+  gtk_test_accessible_assert_relation (object, relation, refs);
+
+  refs = g_list_append (refs, third);
+
+  gtk_accessible_update_relation (GTK_ACCESSIBLE (object),
+                                  relation, refs,
+                                  -1);
+  gtk_test_accessible_assert_relation (object, relation, refs);
+
+  g_list_free (refs);
+
+  g_object_unref (object);
+  g_object_unref (other);
+  g_object_unref (third);
+}
+
+static void
+ensure_test_at_context_type (void)
+{
+  GtkWidget *button;
+
+  button = gtk_button_new ();
+
+  g_object_ref_sink (button);
+
+  g_object_unref (button);
+}
+
+int
+main (int argc, char *argv[])
+{
+  gtk_test_init (&argc, &argv, NULL);
+
+  ensure_test_at_context_type ();
+
+  g_test_add_data_func ("/a11y/state/busy", GUINT_TO_POINTER (GTK_ACCESSIBLE_STATE_BUSY), test_boolean_state);
+  g_test_add_data_func ("/a11y/state/checked", GUINT_TO_POINTER (GTK_ACCESSIBLE_STATE_CHECKED), test_tristate_state);
+  g_test_add_data_func ("/a11y/state/disabled", GUINT_TO_POINTER (GTK_ACCESSIBLE_STATE_DISABLED), test_boolean_state);
+  g_test_add_data_func ("/a11y/state/expanded", GUINT_TO_POINTER (GTK_ACCESSIBLE_STATE_EXPANDED), test_maybe_boolean_state);
+  g_test_add_data_func ("/a11y/state/hidden", GUINT_TO_POINTER (GTK_ACCESSIBLE_STATE_HIDDEN), test_boolean_state);
+  g_test_add_data_func ("/a11y/state/invalid", GUINT_TO_POINTER (GTK_ACCESSIBLE_STATE_INVALID), test_invalid_state);
+  g_test_add_data_func ("/a11y/state/pressed", GUINT_TO_POINTER (GTK_ACCESSIBLE_STATE_PRESSED), test_tristate_state);
+  g_test_add_data_func ("/a11y/state/selected", GUINT_TO_POINTER (GTK_ACCESSIBLE_STATE_SELECTED), test_maybe_boolean_state);
+
+  g_test_add_data_func ("/a11y/property/autocomplete", GUINT_TO_POINTER (GTK_ACCESSIBLE_PROPERTY_AUTOCOMPLETE), test_autocomplete_property);
+  g_test_add_data_func ("/a11y/property/description", GUINT_TO_POINTER (GTK_ACCESSIBLE_PROPERTY_DESCRIPTION), test_string_property);
+  g_test_add_data_func ("/a11y/property/has-popup", GUINT_TO_POINTER (GTK_ACCESSIBLE_PROPERTY_HAS_POPUP), test_boolean_property);
+  g_test_add_data_func ("/a11y/property/key-shortcuts", GUINT_TO_POINTER (GTK_ACCESSIBLE_PROPERTY_KEY_SHORTCUTS), test_string_property);
+  g_test_add_data_func ("/a11y/property/label", GUINT_TO_POINTER (GTK_ACCESSIBLE_PROPERTY_LABEL), test_string_property);
+  g_test_add_data_func ("/a11y/property/level", GUINT_TO_POINTER (GTK_ACCESSIBLE_PROPERTY_LEVEL), test_int_property);
+  g_test_add_data_func ("/a11y/property/modal", GUINT_TO_POINTER (GTK_ACCESSIBLE_PROPERTY_MODAL), test_boolean_property);
+  g_test_add_data_func ("/a11y/property/multi-line", GUINT_TO_POINTER (GTK_ACCESSIBLE_PROPERTY_MULTI_LINE), test_boolean_property);
+  g_test_add_data_func ("/a11y/property/multi-selectable", GUINT_TO_POINTER (GTK_ACCESSIBLE_PROPERTY_MULTI_SELECTABLE), test_boolean_property);
+  g_test_add_data_func ("/a11y/property/orientation", GUINT_TO_POINTER (GTK_ACCESSIBLE_PROPERTY_ORIENTATION), test_orientation_property);
+  g_test_add_data_func ("/a11y/property/placeholder", GUINT_TO_POINTER (GTK_ACCESSIBLE_PROPERTY_PLACEHOLDER), test_string_property);
+  g_test_add_data_func ("/a11y/property/read-only", GUINT_TO_POINTER (GTK_ACCESSIBLE_PROPERTY_READ_ONLY), test_boolean_property);
+  g_test_add_data_func ("/a11y/property/required", GUINT_TO_POINTER (GTK_ACCESSIBLE_PROPERTY_REQUIRED), test_boolean_property);
+  g_test_add_data_func ("/a11y/property/role-description", GUINT_TO_POINTER (GTK_ACCESSIBLE_PROPERTY_ROLE_DESCRIPTION), test_string_property);
+  g_test_add_data_func ("/a11y/property/sort", GUINT_TO_POINTER (GTK_ACCESSIBLE_PROPERTY_SORT), test_sort_property);
+  g_test_add_data_func ("/a11y/property/value-max", GUINT_TO_POINTER (GTK_ACCESSIBLE_PROPERTY_VALUE_MAX), test_number_property);
+  g_test_add_data_func ("/a11y/property/value-min", GUINT_TO_POINTER (GTK_ACCESSIBLE_PROPERTY_VALUE_MIN), test_number_property);
+  g_test_add_data_func ("/a11y/property/value-now", GUINT_TO_POINTER (GTK_ACCESSIBLE_PROPERTY_VALUE_NOW), test_number_property);
+  g_test_add_data_func ("/a11y/property/value-text", GUINT_TO_POINTER (GTK_ACCESSIBLE_PROPERTY_VALUE_TEXT), test_string_property);
+
+  g_test_add_data_func ("/a11y/relation/active-descendant", GUINT_TO_POINTER (GTK_ACCESSIBLE_RELATION_ACTIVE_DESCENDANT), test_ref_relation);
+  g_test_add_data_func ("/a11y/relation/col-count", GUINT_TO_POINTER (GTK_ACCESSIBLE_RELATION_COL_COUNT), test_int_relation);
+  g_test_add_data_func ("/a11y/relation/col-index", GUINT_TO_POINTER (GTK_ACCESSIBLE_RELATION_COL_INDEX), test_int_relation);
+  g_test_add_data_func ("/a11y/relation/col-index-text", GUINT_TO_POINTER (GTK_ACCESSIBLE_RELATION_COL_INDEX_TEXT), test_string_relation);
+  g_test_add_data_func ("/a11y/relation/col-span", GUINT_TO_POINTER (GTK_ACCESSIBLE_RELATION_COL_SPAN), test_int_relation);
+  g_test_add_data_func ("/a11y/relation/controls", GUINT_TO_POINTER (GTK_ACCESSIBLE_RELATION_CONTROLS), test_reflist_relation);
+  g_test_add_data_func ("/a11y/relation/described-by", GUINT_TO_POINTER (GTK_ACCESSIBLE_RELATION_DESCRIBED_BY), test_reflist_relation);
+  g_test_add_data_func ("/a11y/relation/details", GUINT_TO_POINTER (GTK_ACCESSIBLE_RELATION_DETAILS), test_reflist_relation);
+  g_test_add_data_func ("/a11y/relation/error-message", GUINT_TO_POINTER (GTK_ACCESSIBLE_RELATION_ERROR_MESSAGE), test_ref_relation);
+  g_test_add_data_func ("/a11y/relation/flow-to", GUINT_TO_POINTER (GTK_ACCESSIBLE_RELATION_FLOW_TO), test_reflist_relation);
+  g_test_add_data_func ("/a11y/relation/labelled-by", GUINT_TO_POINTER (GTK_ACCESSIBLE_RELATION_LABELLED_BY), test_reflist_relation);
+  g_test_add_data_func ("/a11y/relation/owns", GUINT_TO_POINTER (GTK_ACCESSIBLE_RELATION_OWNS), test_reflist_relation);
+  g_test_add_data_func ("/a11y/relation/pos-in-set", GUINT_TO_POINTER (GTK_ACCESSIBLE_RELATION_POS_IN_SET), test_int_relation);
+  g_test_add_data_func ("/a11y/relation/row-count", GUINT_TO_POINTER (GTK_ACCESSIBLE_RELATION_ROW_COUNT), test_int_relation);
+  g_test_add_data_func ("/a11y/relation/row-index", GUINT_TO_POINTER (GTK_ACCESSIBLE_RELATION_ROW_INDEX), test_int_relation);
+  g_test_add_data_func ("/a11y/relation/row-index-text", GUINT_TO_POINTER (GTK_ACCESSIBLE_RELATION_ROW_INDEX_TEXT), test_string_relation);
+  g_test_add_data_func ("/a11y/relation/row-span", GUINT_TO_POINTER (GTK_ACCESSIBLE_RELATION_ROW_SPAN), test_int_relation);
+  g_test_add_data_func ("/a11y/relation/set-size", GUINT_TO_POINTER (GTK_ACCESSIBLE_RELATION_SET_SIZE), test_int_relation);
+
+  return g_test_run ();
+}
index 9f0f45738bfca76e60fa605354bc87f7e28adb24..643f580d8900d0d1c8eacfec1015acc62738ef42 100644 (file)
@@ -11,6 +11,7 @@ testdatadir = join_paths(installed_test_datadir, 'gtk')
 #  - 'suites': (array): additional test suites
 tests = [
   { 'name': 'button' },
+  { 'name': 'accessible' },
 ]